//用户数据模块
import { defineStore } from 'pinia'
import { reqLogin } from '@/api/user/index'
import type { LoginFrom } from '@/api/user/type.ts'
//导入请求返回的类型
import type { LoginResponseData } from '@/api/user/type.ts'
//导入用户信息返回的类型
import type { UserState } from '@/store/modules/types/type'
//导入token工具
import { getToken, setToken } from '@/utils/token.ts'
//创建用户小仓库
//用户模块仓库中可以引入请求函数、路由信息等，其它模块如此配置即可
export const useUserStore = defineStore('user', {
  //存储数据的地方
  state: (): UserState => {
    return {
      token: getToken(),
    }
  },

  //定义方法，处理异步|逻辑的地方
  actions: {
    //用户登录的方法
    async userLogin(data: LoginFrom): Promise<LoginResponseData> {
      //调用登录接口
      const res: LoginResponseData = await reqLogin(data)
      //判断是否登录成功
      if (res.code == 200) {
        this.token = res.data.token as string
        //登录成功， 存储token到本地存储中
        setToken(res.data.token as string)
        return 'ok'
      } else {
        return Promise.reject(new Error(res.data.message))
      }
    },
  },
  //计算属性
  getters: {},
})
